package com.example.service;

import com.example.pojo.Dict;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.vo.ResultVo;
import com.example.vo.respvo.DictType;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 字典表 服务类
 * </p>
 *
 * @author wsl
 * @since 2022-04-01
 */
public interface IDictService extends IService<Dict> {


    //查询所有字典类型及字典集合
    List<DictType> getDictTypeWithOptions();

    /**
     * 导出字典表数据
     * @param response
     */
    void exportDict(HttpServletResponse response);

    /**
     * 导入字典表数据
     * @param file 字典表数据
     */
    void importDict(MultipartFile file);

    /**
     * 添加字典
     * @param dict
     * @return
     */
    ResultVo addDict(Dict dict);

    /**
     * 添加子节点
     * @param dict
     * @return
     */
    ResultVo addChildren(Dict dict);

    /**
     * 获取字典表信息
     * @param name
     * @param code
     * @param enabled
     * @param start
     * @param end
     * @return
     */
    ResultVo getDictList(String name, String code, Integer enabled, java.sql.Date start, java.sql.Date end);

    ResultVo getDictTypeOptions();

    /**
     * 查询同级下是否还有其它相同的字典
     * @param id
     * @param name
     * @param parentId
     * @return
     */
    Boolean hasSomeSiblingDict(Integer id, String name, Integer parentId);

    /**
     * 顶级目录是否存在其它相同的字典编码
     * @param id
     * @param code
     * @return
     */
    Boolean hasSomeSiblingCode(Integer id, String code);

    /**
     * 删除字典
     * @param ids
     * @return
     */
    ResultVo deleteDict(Integer[] ids);
}
